package com.wonders.hisdoctor.station.project.base.domain;

import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>检查预约记录</p>
 * <p>db_table: EXAM_APPOINTS</p>
 * @author zhanghaonan
 * @date 2021/02/05
 */
@ApiModel("检查预约记录")
@Accessors(chain = true)
@Data
@ToString
@TableName("EXAM_APPOINTS")
public class ExamAppoints implements Serializable {

    private static final long serialVersionUID = 4042166655887221535L;

    /** `主键` db_field: EXAM_NO; desc: 申请序号：每个检查申请在整个系统范围内，用该序号唯一标识，序号可采用集中分配方式，序号的组成可由申请日期加上一个顺序号或使用累计序号 */
    @ApiModelProperty("申请序号：每个检查申请在整个系统范围内，用该序号唯一标识，序号可采用集中分配方式，序号的组成可由申请日期加上一个顺序号或使用累计序号")
    @TableId
    @NotNull(message = "申请序号：每个检查申请在整个系统范围内，用该序号唯一标识，序号可采用集中分配方式，序号的组成可由申请日期加上一个顺序号或使用累计序号不能为空", groups = PrimaryGroup.class)
    @TableField("EXAM_NO")
    private String examNo;

    /** db_field: PATIENT_ID; desc: 病人标识号：不要求申请的病人必须具备主索引，但对具有主索引的病人使用此项 */
    @ApiModelProperty("病人标识号：不要求申请的病人必须具备主索引，但对具有主索引的病人使用此项")
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: VISIT_ID; desc: 住院标识：对在院病人适用 */
    @ApiModelProperty("住院标识：对在院病人适用")
    @TableField("VISIT_ID")
    private Integer visitId;

    /** db_field: LOCAL_ID_CLASS; desc: 检查号类别：每种检查，允许使用各自本地的标识号，如：超声号、X光号，本字段用于区分不同类型的本地标识号，由用户定义 */
    @ApiModelProperty("检查号类别：每种检查，允许使用各自本地的标识号，如：超声号、X光号，本字段用于区分不同类型的本地标识号，由用户定义")
    @TableField("LOCAL_ID_CLASS")
    private String localIdClass;

    /** db_field: PATIENT_LOCAL_ID; desc: 检查标识号：如：超声号、X光号，与检查标识号类别一起构成检查主索引的唯一标识 */
    @ApiModelProperty("检查标识号：如：超声号、X光号，与检查标识号类别一起构成检查主索引的唯一标识")
    @TableField("PATIENT_LOCAL_ID")
    private String patientLocalId;

    /** db_field: NAME; desc: 姓名：病人姓名，非空 */
    @ApiModelProperty("姓名：病人姓名，非空")
    @TableField("NAME")
    private String name;

    /** db_field: NAME_PHONETIC; desc: 姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断 */
    @ApiModelProperty("姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断")
    @TableField("NAME_PHONETIC")
    private String namePhonetic;

    /** db_field: SEX; desc: 性别：病人性别，男、女、未知等，见1.1性别字典 */
    @ApiModelProperty("性别：病人性别，男、女、未知等，见1.1性别字典")
    @TableField("SEX")
    private String sex;

    /** db_field: DATE_OF_BIRTH; desc: 出生日期：病人出生日期 */
    @ApiModelProperty("出生日期：病人出生日期")
    @TableField("DATE_OF_BIRTH")
    private Date dateOfBirth;

    /** db_field: BIRTH_PLACE; desc: 出生地：或称为籍贯，使用代码，本系统定义，见2.2行政区字典 */
    @ApiModelProperty("出生地：或称为籍贯，使用代码，本系统定义，见2.2行政区字典")
    @TableField("BIRTH_PLACE")
    private String birthPlace;

    /** db_field: IDENTITY; desc: 身份：使用规范名称，如：师以上、团以下、战士等，用户定义，见1.6身份字典 */
    @ApiModelProperty("身份：使用规范名称，如：师以上、团以下、战士等，用户定义，见1.6身份字典")
    @TableField("IDENTITY")
    private String identity;

    /** db_field: CHARGE_TYPE; desc: 费别：使用规范名称，如：公费、自费、其他等，用户定义，见1.9费别字典 */
    @ApiModelProperty("费别：使用规范名称，如：公费、自费、其他等，用户定义，见1.9费别字典")
    @TableField("CHARGE_TYPE")
    private String chargeType;

    /** db_field: MAILING_ADDRESS; desc: 通信地址 */
    @ApiModelProperty("通信地址")
    @TableField("MAILING_ADDRESS")
    private String mailingAddress;

    /** db_field: ZIP_CODE; desc: 邮政编码：数字型字符 */
    @ApiModelProperty("邮政编码：数字型字符")
    @TableField("ZIP_CODE")
    private String zipCode;

    /** db_field: PHONE_NUMBER; desc: 联系电话 */
    @ApiModelProperty("联系电话")
    @TableField("PHONE_NUMBER")
    private String phoneNumber;

    /** db_field: EXAM_CLASS; desc: 检查类别：区分各类检查，使用规范名称，用户定义，见3.3检查类别字典 */
    @ApiModelProperty("检查类别：区分各类检查，使用规范名称，用户定义，见3.3检查类别字典")
    @TableField("EXAM_CLASS")
    private String examClass;

    /** db_field: EXAM_SUB_CLASS; desc: 检查子类：区分一种检查类别下的各子类，如超声类下的腹部、心脏、妇产等子类，使用规范名称，用户定义，见3.4检查子类字典 */
    @ApiModelProperty("检查子类：区分一种检查类别下的各子类，如超声类下的腹部、心脏、妇产等子类，使用规范名称，用户定义，见3.4检查子类字典")
    @TableField("EXAM_SUB_CLASS")
    private String examSubClass;

    /** db_field: CLIN_SYMP; desc: 临床症状：正文描述 */
    @ApiModelProperty("临床症状：正文描述")
    @TableField("CLIN_SYMP")
    private String clinSymp;

    /** db_field: PHYS_SIGN; desc: 体征：正文描述 */
    @ApiModelProperty("体征：正文描述")
    @TableField("PHYS_SIGN")
    private String physSign;

    /** db_field: RELEVANT_LAB_TEST; desc: 相关化验结果：正文描述 */
    @ApiModelProperty("相关化验结果：正文描述")
    @TableField("RELEVANT_LAB_TEST")
    private String relevantLabTest;

    /** db_field: RELEVANT_DIAG; desc: 其他诊断：依靠其他检查手段得到的有关诊断 */
    @ApiModelProperty("其他诊断：依靠其他检查手段得到的有关诊断")
    @TableField("RELEVANT_DIAG")
    private String relevantDiag;

    /** db_field: CLIN_DIAG; desc: 临床诊断：主要临床诊断，正文描述 */
    @ApiModelProperty("临床诊断：主要临床诊断，正文描述")
    @TableField("CLIN_DIAG")
    private String clinDiag;

    /** db_field: EXAM_MODE; desc: 检查方式：描述检查的场所，本系统定义，A=病房 B=检查科室 */
    @ApiModelProperty("检查方式：描述检查的场所，本系统定义，A=病房 B=检查科室")
    @TableField("EXAM_MODE")
    private String examMode;

    /** db_field: EXAM_GROUP; desc: 检查分组：用于标识预约排队队列。每个队列称为一个检查组。它可能是一台仪器对应多个检查项目构成的排队队列，也可能是多台仪器对应一个检查项目构成的一个排队队列 */
    @ApiModelProperty("检查分组：用于标识预约排队队列。每个队列称为一个检查组。它可能是一台仪器对应多个检查项目构成的排队队列，也可能是多台仪器对应一个检查项目构成的一个排队队列")
    @TableField("EXAM_GROUP")
    private String examGroup;

    /** db_field: PERFORMED_BY; desc: 执行科室：使用代码，用户定义，见2.6科室字典 */
    @ApiModelProperty("执行科室：使用代码，用户定义，见2.6科室字典")
    @TableField("PERFORMED_BY")
    private String performedBy;

    /** db_field: PATIENT_SOURCE; desc: 病人来源：门诊、病房、外来，使用代码，见1.10病人来源字典 */
    @ApiModelProperty("病人来源：门诊、病房、外来，使用代码，见1.10病人来源字典")
    @TableField("PATIENT_SOURCE")
    private String patientSource;

    /** db_field: FACILITY; desc: 外来医疗单位名称：当病人为外来时，使用此字段表示病人所在医院或医疗机构名称。当病人来自本院时，留空 */
    @ApiModelProperty("外来医疗单位名称：当病人为外来时，使用此字段表示病人所在医院或医疗机构名称。当病人来自本院时，留空")
    @TableField("FACILITY")
    private String facility;

    /** db_field: REQ_DATE_TIME; desc: 申请日期及时间：提出此申请的日期及时间 */
    @ApiModelProperty("申请日期及时间：提出此申请的日期及时间")
    @TableField("REQ_DATE_TIME")
    private Date reqDateTime;

    /** db_field: REQ_DEPT; desc: 申请科室：使用代码，用户定义，见2.6科室字典 */
    @ApiModelProperty("申请科室：使用代码，用户定义，见2.6科室字典")
    @TableField("REQ_DEPT")
    private String reqDept;

    /** db_field: REQ_PHYSICIAN; desc: 申请医生：医生姓名 */
    @ApiModelProperty("申请医生：医生姓名")
    @TableField("REQ_PHYSICIAN")
    private String reqPhysician;

    /** db_field: REQ_MEMO; desc: 申请备注：由申请者输入与申请有关的需另外说明的问题 */
    @ApiModelProperty("申请备注：由申请者输入与申请有关的需另外说明的问题")
    @TableField("REQ_MEMO")
    private String reqMemo;

    /** db_field: SCHEDULED_DATE; desc: 预约日期及时间：此字段由执行科室根据预约安排填写，病理检查该日期为接受 */
    @ApiModelProperty("预约日期及时间：此字段由执行科室根据预约安排填写，病理检查该日期为接受")
    @TableField("SCHEDULED_DATE")
    private Date scheduledDate;

    /** db_field: NOTICE; desc: 注意事项：此字段由执行科室填写，填入与申请项目有关的、病人需注意的事项。该项与预约日期及时间一起构成对检查申请的答复。 */
    @ApiModelProperty("注意事项：此字段由执行科室填写，填入与申请项目有关的、病人需注意的事项。该项与预约日期及时间一起构成对检查申请的答复。")
    @TableField("NOTICE")
    private String notice;

    /** db_field: COSTS; desc: 费用：按标准价格计算得到的费用，由执行科室划价后填入 */
    @ApiModelProperty("费用：按标准价格计算得到的费用，由执行科室划价后填入")
    @TableField("COSTS")
    private BigDecimal costs;

    /** db_field: CHARGES; desc: 应收费用：考虑费别因素后，计算得到的费用，由执行科室划价后填入 */
    @ApiModelProperty("应收费用：考虑费别因素后，计算得到的费用，由执行科室划价后填入")
    @TableField("CHARGES")
    private BigDecimal charges;

    /** db_field: EXAM_REASON; desc: 检查目的 */
    @ApiModelProperty("检查目的")
    @TableField("EXAM_REASON")
    private String examReason;

    /** db_field: PRIORITY_INDICATOR; desc: 优先标志：0-普通 1-优先 表示是否优先就诊和住院 */
    @ApiModelProperty("优先标志：0-普通 1-优先 表示是否优先就诊和住院")
    @TableField("PRIORITY_INDICATOR")
    private Integer priorityIndicator;

    /** db_field: VISIT_DATE; desc: 就诊日期 */
    @ApiModelProperty("就诊日期")
    @TableField("VISIT_DATE")
    private Date visitDate;

    /** db_field: VISIT_NO; desc: 就诊序号 */
    @ApiModelProperty("就诊序号")
    @TableField("VISIT_NO")
    private Integer visitNo;

    /** db_field: REPORT_RETURN_TO_DEPT; desc: 出报告科室 */
    @ApiModelProperty("出报告科室")
    @TableField("REPORT_RETURN_TO_DEPT")
    private String reportReturnToDept;

    /** db_field: INSURANCE_ATTR; desc: 保险属性 */
    @ApiModelProperty("保险属性")
    @TableField("INSURANCE_ATTR")
    private Integer insuranceAttr;

    /** db_field: SCHEDULED_EXECUTE_DATE_TIME; desc: 预约执行日期时间 */
    @ApiModelProperty("预约执行日期时间")
    @TableField("SCHEDULED_EXECUTE_DATE_TIME")
    private Date scheduledExecuteDateTime;

    /** db_field: SCHEDULER; desc: 预约人 */
    @ApiModelProperty("预约人")
    @TableField("SCHEDULER")
    private String scheduler;

}